home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2009 February / PCWFEB09.iso / Software / Linux / Kubuntu 8.10 / kubuntu-8.10-desktop-i386.iso / casper / filesystem.squashfs / usr / share / pyshared / PIL / ImageEnhance.py < prev    next >
Text File  |  2006-12-03  |  3KB  |  90 lines

  1. #
  2. # The Python Imaging Library.
  3. # $Id: ImageEnhance.py 2134 2004-10-06 08:55:20Z fredrik $
  4. #
  5. # image enhancement classes
  6. #
  7. # For a background, see "Image Processing By Interpolation and
  8. # Extrapolation", Paul Haeberli and Douglas Voorhies.  Available
  9. # at http://www.sgi.com/grafica/interp/index.html
  10. #
  11. # History:
  12. #       96-03-23 fl     Created
  13. #
  14. # Copyright (c) Secret Labs AB 1997.
  15. # Copyright (c) Fredrik Lundh 1996.
  16. #
  17. # See the README file for information on usage and redistribution.
  18. #
  19.  
  20. import Image, ImageFilter
  21.  
  22. class _Enhance:
  23.  
  24.     ##
  25.     # Returns an enhanced image. The enhancement factor is a floating
  26.     # point value controlling the enhancement. Factor 1.0 always
  27.     # returns a copy of the original image, lower factors mean less
  28.     # colour (brightness, contrast, etc), and higher values more.
  29.     # There are no restrictions on this value.
  30.     #
  31.     # @param factor Enhancement factor.
  32.     # @return An enhanced image.
  33.  
  34.     def enhance(self, factor):
  35.         return Image.blend(self.degenerate, self.image, factor)
  36.  
  37. ##
  38. # Color enhancement object.
  39. # <p>
  40. # This class can be used to adjust the colour balance of an image, in
  41. # a manner similar to the controls on a colour TV set.  An enhancement
  42. # factor of 0.0 gives a black and white image, a factor of 1.0 gives
  43. # the original image.
  44.  
  45. class Color(_Enhance):
  46.     "Adjust image colour balance"
  47.     def __init__(self, image):
  48.         self.image = image
  49.         self.degenerate = image.convert("L").convert(image.mode)
  50.  
  51. ##
  52. # Contrast enhancement object.
  53. # <p>
  54. # This class can be used to control the contrast of an image, similar
  55. # to the contrast control on a TV set.  An enhancement factor of 0.0
  56. # gives an solid grey image, factor 1.0 gives the original image.
  57.  
  58. class Contrast(_Enhance):
  59.     "Adjust image contrast"
  60.     def __init__(self, image):
  61.         self.image = image
  62.         mean = reduce(lambda a,b: a+b, image.convert("L").histogram())/256.0
  63.         self.degenerate = Image.new("L", image.size, mean).convert(image.mode)
  64.  
  65. ##
  66. # Brightness enhancement object.
  67. # <p>
  68. # This class can be used to control the brighntess of an image.  An
  69. # enhancement factor of 0.0 gives a black image, factor 1.0 gives the
  70. # original image.
  71.  
  72. class Brightness(_Enhance):
  73.     "Adjust image brightness"
  74.     def __init__(self, image):
  75.         self.image = image
  76.         self.degenerate = Image.new(image.mode, image.size, 0)
  77.  
  78. ##
  79. # Sharpness enhancement object.
  80. # <p>
  81. # This class can be used to adjust the sharpness of an image.  The
  82. # enhancement factor 0.0 gives a blurred image, 1.0 gives the original
  83. # image, and a factor of 2.0 gives a sharpened image.
  84.  
  85. class Sharpness(_Enhance):
  86.     "Adjust image sharpness"
  87.     def __init__(self, image):
  88.         self.image = image
  89.         self.degenerate = image.filter(ImageFilter.SMOOTH)
  90.